﻿<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>

</head>
<body>
    <h1>正则表达式测试</h1>
    <script type="text/javascript">
        window.onload = function () {
            //----------------------正则表达式的声明----------------------------------
            //正则表达式字面量
            var reg = /[123](2)(3)/g;
            //对象方式声明
            reg = new RegExp("[123](2)(3)", "g");

            //----------------------属性-----------------------------------------------
            //是否具有gmi标志位
            regExp = /a+/gmi;
            regExp = new RegExp("a+", "gmi");
            regExp.exec(testStr);
            var g = regExp.global;
            var i = regExp.ignoreCase;
            var m = regExp.multiline;
            //源和下一次开始搜索匹配的位置
            var source = regExp.source;
            var index = regExp.lastIndex;

            reg = /[123](2)(3)/g;
            //----------------------方法-----------------------------------------------
            //exec方法：找到则返回捕获组（有input和index的类数组对象） , 没有找到返回null
            var ret1 = reg.exec("0123456789");
           

            //test方法：找到则返回捕获组（有input和index的类数组对象） , 没有找到返回null
            ret1 = reg.test("012346012346");


            var testStr = "12 a3aaa aacd";
            //----------------------量词----------------------------------
            //n+:匹配任何包含至少一个 n 的字符串。
            var regExp = /a+/g;
            var ret = regExp.exec(testStr);

            
            //n*:匹配任何包含零个或多个 n 的字符串。
            regExp = /2a*/;
            ret = regExp.exec(testStr);
            
           
            //n?:匹配任何包含零个或一个 n 的字符串。
            regExp = /2a?/;
            ret = regExp.exec(testStr);

            //n{X}:匹配包含 X 个 n 的序列的字符串。
            regExp = /a{2}/;
            ret = regExp.exec(testStr);

            //n{X,}:匹配包含至少 X 个 n 的序列的字符串。
            regExp = /a{2,}/;
            ret = regExp.exec(testStr);

            
            //n$:匹配任何结尾为 n 的字符串。
            regExp = /d$/;
            ret = regExp.exec(testStr);

            //^n:匹配任何开头为 n 的字符串。
            regExp = /^1/;
            ret = regExp.exec(testStr);

            //?=n:匹配任何其后紧接指定字符串 n 的字符串。(测试没有通过)
            regExp = /a(?=cd)/;
            regExp = /a(?:cd)/;
            ret = regExp.exec(testStr);


            //|:匹配a或者b
            regExp = /12(a|)/;
            ret = regExp.exec(testStr);
            console.log(ret);


            var str = "123456aA";
            //------------------------方括号---------------------------
            //查找方括号之间的任何字符
            reg = /[123]/;
            ret = reg.exec(str);

            //查找任何不在方括号之间的字符
            reg = /[^123]/;
            ret = reg.exec(str);

            //查找任何从 0 至 9 的数字
            reg = /[0-9]/;
            ret = reg.exec(str);

            //查找a到z的任何字符
            reg = /[a-z]/;
            ret = reg.exec(str);


            var str = "123456 aA";
            //------------------------元字符---------------------------
            //查找单个字符，除了换行和行结束符。
            reg = /./;
            ret = reg.exec(str);

            //查找单词字符。
            reg = /\w/;
            ret = reg.exec(str);

            //查找非单词字符。
            reg = /\W/;
            ret = reg.exec(str);

            //查找数字。
            reg = /\d/;
            ret = reg.exec(str);

            //查找非数字字符。
            reg = /\D/;
            ret = reg.exec(str);

            //查找空白字符。
            reg = /\s/;
            ret = reg.exec(str);

            //查找非空白字符。
            reg = /\S/;
            ret = reg.exec(str);

            //查找换行符。
            reg = /\n/;
            ret = reg.exec(str);

        }
    </script>
</body>
</html>
